/**************************************************************************//**
 * @item     CosyOS-III Kernel
 * @file     os_var.c
 * @brief    系统全局变量定义
 * @author   迟凯峰
 * @version  V2.0.0
 * @date     2025.08.04
 ******************************************************************************/

#include "os_redef.h"

/* The Soft-RTC */
#if (SYSCFG_SOFTRTC == __ENABLED__)
const     s_u8_t             _CONST_MEM_   s_month0day[13] = {31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /*!< 每月各有几天？*/
          s_u8_t               _RTC_MEM_   s_month2day = 28;                      /*!< 二月有几天？*/
          s_every_ts           _SYS_MEM_   s_sign_every/**/sZeroInstall_Group;    /*!< 每信号 */
          m_rtccount_t         _SYS_MEM_   s_rtc_counter/**/sZeroInstall;         /*!< RTC计数器 */
          s_rtc_ts             _RTC_MEM_   s_rtc = {SYSCFG_MANUFACTUREDATE};      /*!< RTC */
#endif
/* The Task */
volatile  s_schesign_tu        _SYS_MEM_   s_sign_schedule = {{0, 1}};            /*!< 调度信号 */
volatile  m_bit_t            /*_SYS_MEM_*/ s_sign_delay/**/sZeroInstall;          /*!< 就绪延时信号 */
          s_u8_t               _SYS_MEM_   s_schedulelock_counter/**/sZeroInstall;/*!< 调度锁嵌套计数器 */
          s_ecode_t            _SYS_MEM_   s_startup_ecode = OS_ECODE_NOERROR;    /*!< 启动任务时，用来异地缓存错误码 */
          s_u8_t               _SYS_MEM_   s_task_status0 = OS_STATUS_DELETED;    /*!< 被启动任务 -> 初始状态 */
          s_taskhand_tsp       _SYS_MEM_   s_task_starter/**/sZeroInstall;        /*!< 被启动任务 -> 装载块句柄 */
          s_tasknode_tsp       _SYS_MEM_   s_task_current/**/sZeroInstall;        /*!< 当前任务句柄 */
          s_tasknode_tsp       _SYS_MEM_   s_list_timer = OS_VOID;                /*!< 定时器链表 */
#if (SYSCFG_SAMEPRISCHEDULE == __TIMESHARING__ && SYSCFG_TIMESHARINGMODE == 2)
const     s_sharing_t        _CONST_MEM_   s_time_sharing[SYSCFG_TASKPRIORITY] = {SYSCFG_CUSTOMTIMESHARING}; /*!< 自定义时间片 -> 时间片数组 */
#endif
#if (SYSCFG_KERNELLOCKNESTING == __ENABLED__)
          s_u8_t               _SYS_MEM_   s_kernellock_counter/**/sZeroInstall;  /*!< 内核锁嵌套计数器 */
#endif
/* The Safe runtime */
#if (SYSCFG_SAFERUNTIME == __ENABLED__)
          m_bit_t            /*_SYS_MEM_*/ s_sign_timeout/**/sZeroInstall;        /*!< 超时信号 */
          s_tasknode_tsp       _SYS_MEM_   s_list_timeout = OS_VOID;              /*!< 超时链表 */
#endif
/* The Timing Interrupt */
#if (OS_TIMINTTOTAL > 0)
          s_timinthand_tsp                 s_timint_handle[OS_TIMINTTOTAL];       /*!< 定时中断句柄 */
#endif
/* The Timing Query */
#if (OS_TIMQRYTOTAL > 0)
          s_timqryhand_tsp                 s_timqry_handle[OS_TIMQRYTOTAL];       /*!< 定时查询句柄 */
#endif
/* The Debug Interface */
#if (SYSCFG_DEBUGGING == __ENABLED__)
          m_bit_t            /*_SYS_MEM_*/ s_sign_debugsend/**/sZeroInstall;
          s_u8_t               _SYS_MEM_   s_debug_sendtype/**/sZeroInstall;
          s_u8_t               _SYS_MEM_   s_debug_recvlen/**/sZeroInstall;
          char *             _XDATA_MEM_   s_debug_recvptr;/*
          char               _XDATA_MEM_   s_cmdline_sendbuff[OS_CMDLINESENDBUFFSIZE];
#if (SYSCFG_DEBUG_SENDLEN == __ENABLED__)
          s_u16_t            _XDATA_MEM_   s_cmdline_sendlen;
#endif*/
          m_bit_t            /*_SYS_MEM_*/ s_sign_taskmgr = SYSCFG_TASKMGR_AUTOSTART;
          char               _XDATA_MEM_   s_taskmgr_sendbuff[OS_TASKMGRSENDBUFFSIZE];
#if (SYSCFG_DEBUG_SENDLEN == __ENABLED__)
          s_u16_t            _XDATA_MEM_   s_taskmgr_sendlen;
#endif
          s_u32_t            _DEBUG_MEM_   s_taskmgr_upspeed/**/sZeroInstall;
          s_alarm_ts         _DEBUG_MEM_   s_alarm/**/sZeroInstall_Group;
          s_fault_ts         _DEBUG_MEM_   s_fault/**/sZeroInstall_Group;
#if (SYSCFG_SYSTICKTIME_COUNT == __ENABLED__)
          s_u32_t            _DEBUG_MEM_   s_tick_count1/**/sZeroInstall;
          s_u32_t            _DEBUG_MEM_   s_tick_count2/**/sZeroInstall;
#endif
#if (SYSCFG_TASKPC_MONITOR == __ENABLED__)
          m_pc_t               _SYS_MEM_   s_pc/**/sZeroInstall;
#endif
#if (SYSCFG_RUNTIME_COUNT == __ENABLED__)
          s_runtime_ts       _DEBUG_MEM_   s_runtime/**/sZeroInstall_Group;
#endif
#endif
/* The Task */
const s_u8_t _CONST_MEM_ s_task_pickmap[SYSCFG_TASKPICKBITMAP * 128] =
{
	#if   (SYSCFG_TASKPICKBITMAP == 1)
     /* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F */
/* 0 */ 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
/* 1 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* 2 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
/* 3 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
/* 4 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
/* 5 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
/* 6 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
/* 7 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
	#elif (SYSCFG_TASKPICKBITMAP == 2)
     /* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F */
/* 0 */~0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
/* 1 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
/* 2 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* 3 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* 4 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
/* 5 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
/* 6 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
/* 7 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
/* 8 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
/* 9 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
/* A */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
/* B */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
/* C */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
/* D */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
/* E */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
/* F */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
	#endif
}; /*!< Task pick bitmap */
s_tasknode_tsp _QUE_MEM_ s_task_queue[SYSCFG_TASKPRIORITY]/**/sZeroInstall_Group; /*!< 任务队列 */
m_tqcount_t    _QUE_MEM_ s_task_queue_count/**/sZeroInstall;
#if   (SYSCFG_TASKPRIORITY > 64)
s_u8_t _QUE_MEM_ s_task_table_index/**/sZeroInstall; /*!< 任务表索引 */
s_u8_t _QUE_MEM_ s_task_bytes_index[SYSCFG_TASKPRIORITY / 64 + !!(SYSCFG_TASKPRIORITY % 64)]/**/sZeroInstall_Group;
s_u8_t _QUE_MEM_ s_task_ready_table[SYSCFG_TASKPRIORITY / 64 + !!(SYSCFG_TASKPRIORITY % 64)][8]/**/sZeroInstall_Group;
#elif (SYSCFG_TASKPRIORITY > 8)
s_u8_t _QUE_MEM_ s_task_bytes_index/**/sZeroInstall; /*!< 任务字节索引 */
s_u8_t _QUE_MEM_ s_task_ready_table[SYSCFG_TASKPRIORITY / 8 + !!(SYSCFG_TASKPRIORITY % 8)]/**/sZeroInstall_Group;
#else
s_u8_t _QUE_MEM_ s_task_ready_table/**/sZeroInstall; /*!< 任务就绪表 */
#endif
#if   (SYSCFG_SAMEPRISCHEDULE)
s_u8_t _QUE_MEM_ s_task_ready_count[SYSCFG_TASKPRIORITY]/**/sZeroInstall_Group;
#elif (SYSCFG_MUTEX == __ENABLED__)
s_u8_t _SYS_MEM_ s_taskpri_ceiling = SYSCFG_BASEPRI_CEILING; /*!< 天花板优先级 */
#endif
#if (MCUCFG_PENDSVFIFO_DEPTH > 0 && SYSCFG_PENDSVFIFO_ERRORCALLBACK == __ENABLED__)
s_ecode_t _SYS_MEM_ s_psvfifo_ecode; /*!< 中断挂起服务_FIFO-错误调用返回.错误码 */
#endif
